package com.kfm;

import java.io.*;
import java.net.Socket;

public class FileTransferClient {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 9999);
             DataOutputStream out = new DataOutputStream(socket.getOutputStream())) {

            // 发送新文件状态信息给服务器
            sendFileStatus(out, "CREATED", "");

            // 发送文件给服务器
            sendFile(socket, "server.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 发送文件状态信息给服务器
    private static void sendFileStatus(DataOutputStream out, String status, String filePath) throws IOException {
        out.writeUTF(status);    // 发送文件状态
        out.writeUTF(filePath);  // 发送文件路径
    }

    // 发送文件给服务器
    private static void sendFile(Socket socket, String fileName) throws IOException {
        try (InputStream is = FileTransferClient.class.getResourceAsStream("/" + fileName);
             DataOutputStream dos = new DataOutputStream(socket.getOutputStream())) {

            if (is != null) {
                dos.writeUTF(fileName);  // 发送文件名
                dos.writeLong(is.available());  // 发送文件大小

                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = is.read(buffer)) != -1) {
                    dos.write(buffer, 0, bytesRead);  // 逐块发送文件内容
                }
                dos.flush();
                System.out.println("文件发送成功。");
            } else {
                System.err.println("文件 " + fileName + " 未找到。");
            }
        }
    }
}